/**
 * 通用类型定义
 */

// API响应基础结构
export interface ApiResponse<T = any> {
  code: number
  data: T
  message: string
}

// 分页请求参数
export interface PageParams {
  page: number
  pageSize: number
}

// 分页响应数据
export interface PageData<T = any> {
  list: T[]
  total: number
  page: number
  pageSize: number
}

// 分页响应结构
export type PageResponse<T = any> = ApiResponse<PageData<T>>

// 日期范围
export interface DateRange {
  startTime?: string
  endTime?: string
}

// 表格列配置
export interface TableColumn {
  prop: string
  label: string
  width?: string | number
  minWidth?: string | number
  fixed?: 'left' | 'right' | boolean
  sortable?: boolean | 'custom'
  align?: 'left' | 'center' | 'right'
}

// 字典项
export interface DictItem {
  label: string
  value: string | number
  [key: string]: any
}

// 选项
export interface Option {
  label: string
  value: string | number
  disabled?: boolean
  children?: Option[]
}

// 菜单项
export interface MenuItem {
  id: string
  parentId: string
  name: string
  path: string
  component?: string
  icon?: string
  type: number // 1-目录, 2-菜单, 3-按钮
  permission?: string
  sort: number
  visible: number
  status: number
  children?: MenuItem[]
  createTime: string
  updateTime: string
}

// 文件上传响应
export interface UploadResponse {
  url: string
  name: string
  size: number
}
